import org.junit.Test;

public class StringPractice {

    public static void main(String[] args) {
//        System.out.println(findNumber("sabkabdskajflababkdjhasab", "ab"));
        System.out.println(findMostAlke1("sadhsfjgajfhsg", "dahsfjgadsa"));
    }

    public static Integer findNumber(String str1, String str2) {
        int index = 0;
        int count = 0;
        if (str1 != null && str2 != null) {
            if (str1.length() > str2.length()) {
                if (str1.contains(str2)) {
                    while (true) {
                        if (str1.substring(index).contains(str2)) {
                            index += str1.substring(index).indexOf(str2) + str2.length();
                            count++;
                        } else {
                            break;
                        }
                    }
                }
            }
        }
        return count;
    }

    //优化版本
    public static Integer findNumber1(String str1, String str2) {
        int index = 0;
        int count = 0;
        if (str1 != null && str2 != null && str1.length() > str2.length()) {
            while ((index = str1.indexOf(str2, index)) != -1) {
                count++;
                index += str2.length();
            }
        }
        return count;
    }

    public static String findMostAlke(String str1, String str2) {
        if (str1 != null && str2 != null) {
            String swap = "";
            if (str1.length() < str2.length()) {
                swap = str1;
                str1 = str2;
                str2 = swap;
            }
            if (str1.contains(str2)) {
                return str2;
            }
            for (int i = 1; i < str2.length(); i++) {
                for (int j = 0; j <= i; j++) {
                    String result = str2.substring(j, str2.length() - i + j);
                    if (str1.contains(result)) {
                        return result;
                    }
                }
            }
            return "";
        } else {
            System.out.println("输入不能为空");
            return "";
        }
    }

    //优化版本
    public static String findMostAlke1(String str1, String str2) {
        if (str1 == null || str2 == null) {
            System.out.println("输入不能为空");
            return "";
        }
        if (str1.length() < str2.length()) {
            String swap = str1;
            str1 = str2;
            str2 = swap;
        }
        if (str1.contains(str2)) {
            return str2;
        }
        for (int len = str2.length(); len > 0; len--) {
            for (int i = 0; i <= str2.length() - len; i++) {
                String result = str2.substring(i, i + len);
                if (str1.contains(result)) return result;
            }
        }
        return "";
    }

}
